#
# libspice-common
#
set(spice_common_sources
  agent.c
  agent.h
  backtrace.c
  backtrace.h
  canvas_utils.c
  canvas_utils.h
  demarshallers.h
  draw.h
  lines.c
  lines.h
  log.c
  log.h
  lz.c
  lz.h
  lz_common.h
  lz_config.h
  macros.h
  marshaller.c
  marshaller.h
  mem.c
  mem.h
  messages.h
  pixman_utils.c
  pixman_utils.h
  quic.c
  quic.h
  quic_config.h
  rect.h
  region.c
  region.h
  ring.h
  rop3.c
  rop3.h
  snd_codec.c
  snd_codec.h
  utils.c
  utils.h
  verify.h
  recorder.h
  ssl_verify.h
  ssl_verify.c
  generated_client_marshallers.h
  generated_client_marshallers.c
  generated_client_demarshallers.c
  )

if (instrumentation STREQUAL "recorder")
    list(APPEND spice_common_sources
            recorder/recorder.c
            recorder/recorder.h
            recorder/recorder_ring.c
            recorder/recorder_ring.h
    )
endif()

if (instrumentation STREQUAL "agent")
    list(APPEND spice_common_sources
        agent_interface.c
        agent_interface.h
    )
endif()

# spice_common_lib = static_library('spice-common', spice_common_sources,
#                                   install : false,
#                                   include_directories : spice_common_include,
#                                   dependencies : spice_common_deps)

# spice_common_dep = declare_dependency(link_with : spice_common_lib,
#                                       include_directories : spice_common_include,
#                                       dependencies : spice_common_deps)

add_library(${PROJECT_NAME}
        STATIC
        ${spice_common_sources}
)
target_include_directories(${PROJECT_NAME}
        PUBLIC
        ${spice_common_include}
    )
set(spice-common_deps)
if (ENABLE_GSTREAMER_MOBILE_DEPS)
	list(APPEND spice-common_deps GStreamer::mobile)
else()
	list(APPEND spice-common_deps PkgConfig::GLIB)
	list(APPEND spice-common_deps PkgConfig::PIXMAN)
	list(APPEND spice-common_deps PkgConfig::OPUS)

endif()

target_link_libraries(${PROJECT_NAME}
    PUBLIC
#        PkgConfig::SPICE_PROTOCOL
        spice-protocol
        ${spice-common_deps}
    )

## client_demarshallers
#if spice_common_generate_client_code or spice_common_generate_server_code
#  codegen_cmd = [python, spice_codegen]
#  codegen_args = ['--generate-demarshallers',
#                  '--client',
#                  '--include', 'common/messages.h',
#                  '--generated-declaration-file', '@OUTPUT1@',
#                  '@INPUT@', '@OUTPUT0@']
#
#  client_demarshallers = custom_target('client_demarshallers',
#                                       input : [spice_proto],
#                                       output : ['generated_client_demarshallers.c', 'generated_messages.h'],
#                                       install : false,
#                                       command : [codegen_cmd, codegen_args],
#                                       depend_files : [spice_codegen_files, 'messages.h'])
#endif

##
## libspice-common-client
##
#if spice_common_generate_client_code
#  # client_marshallers
#  codegen_args = ['--generate-marshallers',
#                  '--generate-header',
#                  '-P',
#                  '--client',
#                  '--include', 'common/client_marshallers.h',
#                  '@INPUT0@', '@OUTPUT0@']
#
#  client_marshallers = custom_target('client_marshallers',
#                                     input : [spice_proto, client_demarshallers],
#                                     output : ['generated_client_marshallers.c', 'generated_client_marshallers.h'],
#                                     install : false,
#                                     command : [codegen_cmd, codegen_args],
#                                     depend_files : [spice_codegen_files, 'client_marshallers.h'])
#
#  spice_common_client_sources = [
#    client_demarshallers,
#    client_marshallers,
#    'client_marshallers.h',
#    'ssl_verify.c',
#    'ssl_verify.h',
#  ]
#
#  spice_common_client_lib = static_library('spice-common-client', spice_common_client_sources,
#                                           install : false,
#                                           dependencies : [spice_common_dep, gio2_deps])
#
#  spice_common_client_dep = declare_dependency(sources : client_marshallers[1],
#                                               link_with : spice_common_client_lib,
#                                               dependencies : [spice_common_dep, gio2_deps])
#endif

##
## libspice-common-server
##
#if spice_common_generate_server_code
#  structs_args = [
#   '-M', 'String',
#   '-M', 'Rect',
#   '-M', 'Point',
#   '-M', 'DisplayBase',
#   '-M', 'Fill',
#   '-M', 'Opaque',
#   '-M', 'Copy',
#   '-M', 'Blend',
#   '-M', 'Blackness',
#   '-M', 'Whiteness',
#   '-M', 'Invers',
#   '-M', 'Rop3',
#   '-M', 'Stroke',
#   '-M', 'Text',
#   '-M', 'Transparent',
#   '-M', 'AlphaBlend',
#   '-M', 'Composite',
#  ]
#
#  targets = [
#    { 'name' : 'server_demarshallers',
#      'input' : [ spice_proto, client_demarshallers ],
#      'output' : ['generated_server_demarshallers.c'],
#      'codegen_args' : ['--generate-demarshallers',
#                        '--server',
#                        '--include', 'common/messages.h',
#                        '@INPUT0@', '@OUTPUT0@'],
#    },
#    { 'name' : 'server_marshallers',
#      'input' : [ spice_proto, client_demarshallers ],
#      'output' : ['generated_server_marshallers.c', 'generated_server_marshallers.h'],
#      'codegen_args' : ['--generate-marshallers',
#                        '--generate-header',
#                        '--server',
#                        structs_args,
#                        '--include', 'common/messages.h',
#                        '@INPUT0@', '@OUTPUT0@']
#    },
#  ]
#
#  spice_common_server_sources = []
#  spice_common_server_dep_sources = []
#
#  foreach t : targets
#    target = custom_target(t['name'],
#                           input : t['input'],
#                           output : t['output'],
#                           install : false,
#                           command : [codegen_cmd, t['codegen_args']],
#                           depend_files : [spice_codegen_files, 'messages.h'])
#    spice_common_server_sources += target
#    if t['output'].length() > 1
#      spice_common_server_dep_sources += target[1]
#    endif
#  endforeach
#
#  spice_common_server_lib = static_library('spice-common-server', spice_common_server_sources,
#                                           install : false,
#                                           dependencies : spice_common_dep)
#
#  spice_common_server_dep = declare_dependency(sources : spice_common_server_dep_sources,
#                                               link_with : spice_common_server_lib,
#                                               dependencies : spice_common_dep)
#endif
